/*
 * @Description: 
 * @Author: Junhuang
 * @Date: 2022-05-24 22:33:45
 * @LastEditTime: 2022-05-25 09:54:08
 * @LastEditors: Junhuang
 * @Reference: Advertisement 模型类
 */
'use strict';
// 引入
module.exports = app => {
  const { INTEGER, STRING, DATE, TEXT } = app.Sequelize;
  // 配置（重要：一定要配置详细，一定要！！！）
  const Advertisement = app.model.define('advertisement', {
    id: { type: INTEGER(20), primaryKey: true, allowNull: false, autoIncrement: true, comment: '推荐位主键id' },
    type: { type: INTEGER(20), allowNull: false, comment: '推荐位类别' },
    video_id: { type: INTEGER(20), allowNull: false, comment: '视频id' },
    cover: { type: STRING(255), defaultValue: '', comment: '推荐图片地址' },
    status: { type: INTEGER(2), allowNull: false, defaultValue: 0, comment: '状态' },
    description: { type: TEXT, defaultValue: '', comment: '推荐说明' },
    created_time: {
      type: DATE,
      // 获取器，对获取的数据库中的字段进行处理，此处将数据库中的时间字段转换为timestamp
      get() {
        const val = this.getDataValue('created_time');
        return (new Date(val)).getTime();
      },
    },
    updated_time: {
      type: DATE,
      // 获取器，对获取的数据库中的字段进行处理，此处将数据库中的时间字段转换为timestamp
      get() {
        const val = this.getDataValue('updated_time');
        return (new Date(val)).getTime();
      },
    },
  }, {
    timestamps: true, // 是否自动写入时间戳
    tableName: 'advertisement', // 自定义数据表名称
  });

  // 关联关系
  Advertisement.associate = function() {
    // 关联视频
    Advertisement.belongsTo(app.model.Video, {
      foreignKey: 'video_id',
    });
  };

  return Advertisement;
};